package com.example.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

import java.util.HashMap;
import java.util.Map;

/**
 * 控制器 路由前缀 /cache
 */
@RestController
@RequestMapping("/cache")
public class CacheController {

    /** Redis连接池 自动加载 */
    @Autowired
    private JedisPool jedisPool;

    /**
     * 测试使用 Redis 缓存
     */
    @GetMapping("/get")
    public Map<String, String> getCache() {
        /* 设置返回值类型为map  */
        Map<String, String> back = new HashMap<>();
        /* 从连接池中获取一个Redis链接 */
        try (Jedis jedis = jedisPool.getResource()) {
            // 从 Redis 中获取缓存数据
            String key = "testKey";
            /* 读取配置 */
            String value = jedis.get(key);

            if (value != null) {
                /* 设置返回值 */
                back.put(key, value);
            } else {
                // 如果缓存中不存在，则设置一个默认值
                String defaultValue = "default value";
                /* 设置Redis值 */
                jedis.set(key, defaultValue);
                /* 设置缓存 */
                back.put(key, defaultValue);
            }
        }
        return back;
    }
}